<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js数组</title>
		<!-- js的数组   Java数组长度不变 数据类型单一-->
		<script>
			/* 数组 两种定义方式  赋值可以任意类型  长度可变 
			for in*/
			// var a0 = [a, 2, 3, false];
			// var a = [1, 'asasa1as', 1.11, null, false, a0];
			// console.log(a);

			//创建空数组的两种方式
			var a = new Array();
			var b = [];
			a = new Array(10, 1.1, 'hello', true, null, undefined, new Object);
			// console.log(a);
			// console.log(a.length);

			a[99] = 0;
			// console.log(a.length);
			// console.log(a[98]);//undefined
			// console.log(a);

			// for (var i = 0; i < a.length; i++) {
			// 	console.log(a[i]); //输出7条值、无值显示有92条、一条输出0
			// }
			//偶数和
			var b = [1, 2, 3, 4, 5, 6, 7, '8', '8', 2.2, 2.3];
			var sum = 0;
			for (var i = 0; i < b.length; i++) {
				if (b[i] % 2 === 0) {
					sum += b[i];
				}
			}
			// console.log(sum);
			//测试for in
			var c = [10, 9, 8, 7, 6, 10, 9, 8, 7, 6];
			// for (var e in c) {
			// 	console.log("e:::" + e); //依次返回下标
			// 	console.log("c[e]:::" + c[e]); //如果要遍历数组，就用此种方式
			// }

			//循环接收用户输入，并放入数组
			/* 函数声明的两种方式 1.关键字 2.函数直接量 */
			/* 函数的类型：有参无参，有无返回值 */
			// f();

			//方式一：关键字定义
			function f() {
				var a = [1, 2, 2, 2, 3, 1];
				for (var i in a) {
					console.log(a[i]);
				}
			}
			//方式二：函数直接量定义
			// fn();//Uncaught TypeError: fn is not a function
			var fn = function() {
				console.log("11100");
			}
			//这种方式定义函数 必须在声明后调用
			// fn();

			//重写 有参函数
			var fn = function(a) { //这里不要写变量类型
				console.log(a);
			}
			var a = [1, 11, 111, 1111];
			// fn(a);
			//有返回值的函数
			var e = function(x, y) {
				return x + y;
			}
			// console.log("e:::" + e(1, 2.111));


			//review
			// var nn = [];
			// var fn1 = function(a) {
			// 	nn = [a];
			// }
			// fn1(1); //1
			// console.log(nn);
			// var fn1 = function(a, b) {
			// 	nn = [a, b];
			// }
			// fn1(1); //重载了 输出 1,undefined
			// console.log(nn);

			// var fn2 = function(x, y) {
			// 	var nn = [x, x + y];
			// 	console.log(nn);
			// 	return nn;
			// }
			// fn2(2, 2);
			// fn2(4); //4,NaN
			// // console.log(nn);
			// var fn2 = function(e) {
			// 	nn = [e, e * e];
			// 	console.log(nn);
			// 	return nn;
			// }
			// fn2(4); //正确调用一个参数的fn2
			// fn2(2, 2); //正确调用两个参数的fn2

			//统计 字符串里a出现的次数
			var s = [1, 1, 1, 1, 1, 1, 1, 'a', 111111, "asdad", null, false, undefined, a];
			var fun = function(a) {
				var sum = 0;
				for (var i = 0; i < a.length; i++) {
					if (a[i] == "a") {
						sum++;
					}
				}
				return sum;
			}
			var fun1 = function(a) {
				var sum = 0;
				for (var i in a) {
					if (a[i] == "a") {
						sum++;
					}
				}
				return sum;
			}
			console.log(fun1(s));
			console.log(fun(s));

			//
			var ss = "aaaaaasssss1a._-=+!@@#$#^^%*&*)ssasss";
			var fnn11 = function(ss) {
				var sum = 0;
				for (var i in ss) {
					if (ss[i] == "a") {
						// if (ss.charAt(i) == "a") {
						sum++;
					}
				}
				return sum;
			}
			console.log(fnn11(ss));

			var fnn12 = function(ss) {
				var a = ss.split("a");
				return a.length - 1
			}
			console.log(fnn12(ss));
			console.log(fun1(ss));
			//countAdvance
			var countAdvance = function(str, char) {
				var count = 0;
				for (var i in str) {
					if (str[i] == char) {
						count++;
					}
				}
				return count;
			}
			console.log(countAdvance(ss, "a"));
		</script>
	</head>
	<body>
	</body>
</html>
